/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.gbvbahia.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * Classe auxiliar para trabalhar com Strings.
 *
 * @since v.1 22/03/2012
 * @author Guilherme Braga
 */
public final class StringBeanUtils {

    /**
     * Define a variação da String para LIKE fixa no final e variavel no
     * inicio. Ex: "%aria"
     */
    public static final int LIKE_START = 0;
    /**
     * Define a variação da String para LIKE fixa no inicio e variavel no
     * final. Ex: "Mar%"
     */
    public static final int LIKE_END = 1;
    /**
     * Define a variação da String para LIKE variavel no inicio e variavel no
     * final. Ex: "%ari%"
     */
    public static final int LIKE_MIDDLE = 2;

    /**
     * Classe exclusiva de métodos estaticos, não pode ser instânciada.
     */
    private StringBeanUtils() {
    }

    /**
     * Acerta o parametro para null ou concatena com % para ser incluido em
     * consultas do tipo: <i>(:nome is null or upper(o.nome) like
     * upper(:nome))</i>.
     *
     * @param string
     * @param likeType Utilizar as constantes:<br>
     * UtilBeans.StringBeanUtils.LIKE_START<br>
     * UtilBeans.StringBeanUtils.LIKE_END<br>
     * UtilBeans.StringBeanUtils.LIKE_MIDDLE<br>
     * @return java.lang.String ou null
     */
    public static String acertaNomeParaLike(String string,
            final int likeType) {
        if (StringUtils.isBlank(string)) {
            string = null;
        } else {
            switch (likeType) {
                case LIKE_START:
                    string = "%" + string;
                    break;
                case LIKE_MIDDLE:
                    string = "%" + string + "%";
                    break;
                case LIKE_END:
                    string = string + "%";
                    break;
            }

        }
        return string;
    }
}
